package com.jdk8datedemo;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class InstantDemo {
    public static void main(String[] args) {
        /*
        static Instant now()                          获取当前时间的Instant对象（标准时间)
        static Instant ofXxx(long epochMilli)         根据（秒/毫秒/纳秒）获取Instant对象
        zonedDateTime atZone(zoneId zone)             指定时区
        boolean isXxx(Instant otherInstant)           判断系列的方法
        Instant minusXxx( long millisToSubtract)      减少时间系列的方法
        Instant plusXxx(long millisToSubtract)        增加时间系列的方法
         */
        //1.获取当前时间的Instant对象（标准时间)
        Instant now = Instant.now();
        System.out.println(now);

        //2.根据（秒/毫秒/纳秒）获取Instant对象
        Instant instant = Instant.ofEpochMilli(0L);
        System.out.println(instant);
        Instant instant1 = Instant.ofEpochSecond(1L);
        System.out.println(instant1);
        Instant instant2 = Instant.ofEpochSecond(1L, 1000000L);
        System.out.println(instant2);

        //3.指定时区
        ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(time);

        //4.判断系列的方法
        //isBefore:判断调用者代表的时间是否在参数表示时间的前面
        //isAfter:判断调用者代表的时间是否在参数表示时间的后面
        Instant instant3 = Instant.ofEpochMilli(0L);
        Instant instant4 = Instant.ofEpochMilli(10L);
        boolean flag1 = instant3.isBefore(instant4);
        System.out.println(flag1);//true
        boolean flag2 = instant3.isAfter(instant4);
        System.out.println(flag2);//false

        //5.减少时间系列的方法
        Instant instant5 = Instant.ofEpochMilli(3000L);
        System.out.println(instant5);//1970-01-01T00:00:03Z
        Instant instant6 = instant5.minusSeconds(1);
        System.out.println(instant6);//1970-01-01T00:00:02Z

        //6.增加时间系列的方法
        Instant instant7 = instant5.plusSeconds(10);
        System.out.println(instant7);//1970-01-01T00:00:13Z
    }
}
